using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;
using System.IO;
using CrystalDecisions.CrystalReports;
using System.Data.SqlClient;

public partial class ReporteOrdenCompra : System.Web.UI.Page
{
    ReportDocument reportDoc = new ReportDocument();
    protected void Page_Load(object sender, EventArgs e)
    {
        mostrarReporte();
        
    }
    protected void mostrarReporte()
    {
        try
        {
            String cadena = (String)ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
            SqlConnection conexion = new SqlConnection(cadena);
            string consulta = "";
            string concatena = "";
            SqlDataAdapter da = new System.Data.SqlClient.SqlDataAdapter(consulta + " " + concatena, conexion);
            int num = 0;


            if (tb_empresa.Text != string.Empty)
            {
                if (num == 0)
                {
                    consulta = "SELECT Ordenes_Compras.cod_orden_compra, Ordenes_Compras.fecha, Ordenes_Compras.importe_total, Ordenes_Compras.importe_total_me, Ordenes_Compras.estado, Proveedores.nombre_empresa, Proveedores.nro_documento, Proveedores.direccion_empresa, Proveedores.telefono_empresa, Personas.nombres, Personas.apellidos, Detalles_Orden_Compras.nro_renglon, Detalles_Orden_Compras.cantidad, Detalles_Orden_Compras.importe_gs, Detalles_Orden_Compras.importe_me, Detalles_Orden_Compras.cantidad_recibida, Detalles_Orden_Compras.costo_unitario, Productos.nombre, Familias_Productos.iva, Marcas.descripcion AS Marca, Modelo_Productos.descripcion AS Modelo, Monedas.descripcion AS Moneda FROM Ordenes_Compras  JOIN Detalles_Orden_Compras ON Ordenes_Compras.cod_orden_compra = Detalles_Orden_Compras.cod_orden_compra JOIN Proveedores ON Ordenes_Compras.cod_proveedor = Proveedores.cod_proveedor JOIN Productos ON Detalles_Orden_Compras.cod_producto = Productos.cod_producto JOIN Marcas ON Productos.cod_marca = Marcas.cod_marca JOIN Modelo_Productos ON Productos.cod_modelo = Modelo_Productos.cod_modelo JOIN Familias_Productos ON Productos.cod_familia_producto = Familias_Productos.cod_familia_producto JOIN Monedas ON Ordenes_Compras.cod_moneda = Monedas.cod_moneda JOIN Personas ON Personas.cod_tipo_documento = Proveedores.cod_tipo_documento AND Personas.nro_documento = Proveedores.nro_documento " +
                               " WHERE Proveedores.nombre_empresa like '" + tb_empresa.Text + "%'";
                    da = new System.Data.SqlClient.SqlDataAdapter(consulta, conexion);
                    num++;
                }
                else
                {
                    concatena = " AND Proveedores.nombre_empresa like '" + tb_empresa.Text + "%'";
                    da = new System.Data.SqlClient.SqlDataAdapter(consulta + " " + concatena, conexion);
                    num++;
                }
            }
            if (tb_estado.Text != string.Empty)
            {
                if (num == 0)
                {
                    consulta = "SELECT Ordenes_Compras.cod_orden_compra, Ordenes_Compras.fecha, Ordenes_Compras.importe_total, Ordenes_Compras.importe_total_me, Ordenes_Compras.estado, Proveedores.nombre_empresa, Proveedores.nro_documento, Proveedores.direccion_empresa, Proveedores.telefono_empresa, Personas.nombres, Personas.apellidos, Detalles_Orden_Compras.nro_renglon, Detalles_Orden_Compras.cantidad, Detalles_Orden_Compras.importe_gs, Detalles_Orden_Compras.importe_me, Detalles_Orden_Compras.cantidad_recibida, Detalles_Orden_Compras.costo_unitario, Productos.nombre, Familias_Productos.iva, Marcas.descripcion AS Marca, Modelo_Productos.descripcion AS Modelo, Monedas.descripcion AS Moneda FROM Ordenes_Compras  JOIN Detalles_Orden_Compras ON Ordenes_Compras.cod_orden_compra = Detalles_Orden_Compras.cod_orden_compra JOIN Proveedores ON Ordenes_Compras.cod_proveedor = Proveedores.cod_proveedor JOIN Productos ON Detalles_Orden_Compras.cod_producto = Productos.cod_producto JOIN Marcas ON Productos.cod_marca = Marcas.cod_marca JOIN Modelo_Productos ON Productos.cod_modelo = Modelo_Productos.cod_modelo JOIN Familias_Productos ON Productos.cod_familia_producto = Familias_Productos.cod_familia_producto JOIN Monedas ON Ordenes_Compras.cod_moneda = Monedas.cod_moneda JOIN Personas ON Personas.cod_tipo_documento = Proveedores.cod_tipo_documento AND Personas.nro_documento = Proveedores.nro_documento " +
                               " WHERE Ordenes_Compras.estado like '" + tb_estado.Text + "%'";
                    da = new System.Data.SqlClient.SqlDataAdapter(consulta, conexion);
                    num++;
                }
                else
                {
                    concatena = " AND Ordenes_Compras.estado like '" + tb_estado.Text + "%'";
                    da = new System.Data.SqlClient.SqlDataAdapter(consulta + " " + concatena, conexion);
                    num++;
                }
            }
            if (tb_marca.Text != string.Empty)
            {
                if (num == 0)
                {
                    consulta = "SELECT Ordenes_Compras.cod_orden_compra, Ordenes_Compras.fecha, Ordenes_Compras.importe_total, Ordenes_Compras.importe_total_me, Ordenes_Compras.estado, Proveedores.nombre_empresa, Proveedores.nro_documento, Proveedores.direccion_empresa, Proveedores.telefono_empresa, Personas.nombres, Personas.apellidos, Detalles_Orden_Compras.nro_renglon, Detalles_Orden_Compras.cantidad, Detalles_Orden_Compras.importe_gs, Detalles_Orden_Compras.importe_me, Detalles_Orden_Compras.cantidad_recibida, Detalles_Orden_Compras.costo_unitario, Productos.nombre, Familias_Productos.iva, Marcas.descripcion AS Marca, Modelo_Productos.descripcion AS Modelo, Monedas.descripcion AS Moneda FROM Ordenes_Compras  JOIN Detalles_Orden_Compras ON Ordenes_Compras.cod_orden_compra = Detalles_Orden_Compras.cod_orden_compra JOIN Proveedores ON Ordenes_Compras.cod_proveedor = Proveedores.cod_proveedor JOIN Productos ON Detalles_Orden_Compras.cod_producto = Productos.cod_producto JOIN Marcas ON Productos.cod_marca = Marcas.cod_marca JOIN Modelo_Productos ON Productos.cod_modelo = Modelo_Productos.cod_modelo JOIN Familias_Productos ON Productos.cod_familia_producto = Familias_Productos.cod_familia_producto JOIN Monedas ON Ordenes_Compras.cod_moneda = Monedas.cod_moneda JOIN Personas ON Personas.cod_tipo_documento = Proveedores.cod_tipo_documento AND Personas.nro_documento = Proveedores.nro_documento " +
                               " WHERE Marcas.descripcion like '" + tb_marca.Text + "%'";
                    da = new System.Data.SqlClient.SqlDataAdapter(consulta, conexion);
                    num++;
                }
                else
                {
                    concatena = " AND Marcas.descripcion like '" + tb_marca.Text + "%'";
                    da = new System.Data.SqlClient.SqlDataAdapter(consulta + " " + concatena, conexion);
                    num++;
                }
            }
            if (tb_modelos.Text != string.Empty)
            {
                if (num == 0)
                {
                    consulta = "SELECT Ordenes_Compras.cod_orden_compra, Ordenes_Compras.fecha, Ordenes_Compras.importe_total, Ordenes_Compras.importe_total_me, Ordenes_Compras.estado, Proveedores.nombre_empresa, Proveedores.nro_documento, Proveedores.direccion_empresa, Proveedores.telefono_empresa, Personas.nombres, Personas.apellidos, Detalles_Orden_Compras.nro_renglon, Detalles_Orden_Compras.cantidad, Detalles_Orden_Compras.importe_gs, Detalles_Orden_Compras.importe_me, Detalles_Orden_Compras.cantidad_recibida, Detalles_Orden_Compras.costo_unitario, Productos.nombre, Familias_Productos.iva, Marcas.descripcion AS Marca, Modelo_Productos.descripcion AS Modelo, Monedas.descripcion AS Moneda FROM Ordenes_Compras  JOIN Detalles_Orden_Compras ON Ordenes_Compras.cod_orden_compra = Detalles_Orden_Compras.cod_orden_compra JOIN Proveedores ON Ordenes_Compras.cod_proveedor = Proveedores.cod_proveedor JOIN Productos ON Detalles_Orden_Compras.cod_producto = Productos.cod_producto JOIN Marcas ON Productos.cod_marca = Marcas.cod_marca JOIN Modelo_Productos ON Productos.cod_modelo = Modelo_Productos.cod_modelo JOIN Familias_Productos ON Productos.cod_familia_producto = Familias_Productos.cod_familia_producto JOIN Monedas ON Ordenes_Compras.cod_moneda = Monedas.cod_moneda JOIN Personas ON Personas.cod_tipo_documento = Proveedores.cod_tipo_documento AND Personas.nro_documento = Proveedores.nro_documento " +
                               " WHERE Modelo_Productos.descripcion like '" + tb_modelos.Text + "%'";
                    da = new System.Data.SqlClient.SqlDataAdapter(consulta, conexion);
                    num++;
                }
                else
                {
                    concatena = " AND Modelo_Productos.descripcion like '" + tb_modelos.Text + "%'";
                    da = new System.Data.SqlClient.SqlDataAdapter(consulta + " " + concatena, conexion);
                    num++;
                }
            }
            if (tb_moneda.Text != string.Empty)
            {
                if (num == 0)
                {
                    consulta = "SELECT Ordenes_Compras.cod_orden_compra, Ordenes_Compras.fecha, Ordenes_Compras.importe_total, Ordenes_Compras.importe_total_me, Ordenes_Compras.estado, Proveedores.nombre_empresa, Proveedores.nro_documento, Proveedores.direccion_empresa, Proveedores.telefono_empresa, Personas.nombres, Personas.apellidos, Detalles_Orden_Compras.nro_renglon, Detalles_Orden_Compras.cantidad, Detalles_Orden_Compras.importe_gs, Detalles_Orden_Compras.importe_me, Detalles_Orden_Compras.cantidad_recibida, Detalles_Orden_Compras.costo_unitario, Productos.nombre, Familias_Productos.iva, Marcas.descripcion AS Marca, Modelo_Productos.descripcion AS Modelo, Monedas.descripcion AS Moneda FROM Ordenes_Compras  JOIN Detalles_Orden_Compras ON Ordenes_Compras.cod_orden_compra = Detalles_Orden_Compras.cod_orden_compra JOIN Proveedores ON Ordenes_Compras.cod_proveedor = Proveedores.cod_proveedor JOIN Productos ON Detalles_Orden_Compras.cod_producto = Productos.cod_producto JOIN Marcas ON Productos.cod_marca = Marcas.cod_marca JOIN Modelo_Productos ON Productos.cod_modelo = Modelo_Productos.cod_modelo JOIN Familias_Productos ON Productos.cod_familia_producto = Familias_Productos.cod_familia_producto JOIN Monedas ON Ordenes_Compras.cod_moneda = Monedas.cod_moneda JOIN Personas ON Personas.cod_tipo_documento = Proveedores.cod_tipo_documento AND Personas.nro_documento = Proveedores.nro_documento " +
                               " WHERE Monedas.descripcion like '" + tb_moneda.Text + "%'";
                    da = new System.Data.SqlClient.SqlDataAdapter(consulta, conexion);
                    num++;
                }
                else
                {
                    concatena = " AND Monedas.descripcion like '" + tb_moneda.Text + "%'";
                    da = new System.Data.SqlClient.SqlDataAdapter(consulta + " " + concatena, conexion);
                    num++;
                }
            }
            if (tb_producto.Text != string.Empty)
            {
                if (num == 0)
                {
                    consulta = "SELECT Ordenes_Compras.cod_orden_compra, Ordenes_Compras.fecha, Ordenes_Compras.importe_total, Ordenes_Compras.importe_total_me, Ordenes_Compras.estado, Proveedores.nombre_empresa, Proveedores.nro_documento, Proveedores.direccion_empresa, Proveedores.telefono_empresa, Personas.nombres, Personas.apellidos, Detalles_Orden_Compras.nro_renglon, Detalles_Orden_Compras.cantidad, Detalles_Orden_Compras.importe_gs, Detalles_Orden_Compras.importe_me, Detalles_Orden_Compras.cantidad_recibida, Detalles_Orden_Compras.costo_unitario, Productos.nombre, Familias_Productos.iva, Marcas.descripcion AS Marca, Modelo_Productos.descripcion AS Modelo, Monedas.descripcion AS Moneda FROM Ordenes_Compras  JOIN Detalles_Orden_Compras ON Ordenes_Compras.cod_orden_compra = Detalles_Orden_Compras.cod_orden_compra JOIN Proveedores ON Ordenes_Compras.cod_proveedor = Proveedores.cod_proveedor JOIN Productos ON Detalles_Orden_Compras.cod_producto = Productos.cod_producto JOIN Marcas ON Productos.cod_marca = Marcas.cod_marca JOIN Modelo_Productos ON Productos.cod_modelo = Modelo_Productos.cod_modelo JOIN Familias_Productos ON Productos.cod_familia_producto = Familias_Productos.cod_familia_producto JOIN Monedas ON Ordenes_Compras.cod_moneda = Monedas.cod_moneda JOIN Personas ON Personas.cod_tipo_documento = Proveedores.cod_tipo_documento AND Personas.nro_documento = Proveedores.nro_documento " +
                               " WHERE Productos.nombre like '" + tb_producto.Text + "%'";
                    da = new System.Data.SqlClient.SqlDataAdapter(consulta, conexion);
                    num++;
                }
                else
                {
                    concatena = " AND Productos.nombre like '" + tb_producto.Text + "%'";
                    da = new System.Data.SqlClient.SqlDataAdapter(consulta + " " + concatena, conexion);
                    num++;
                }
            }
            if (tb_producto.Text.Equals("") && tb_moneda.Text.Equals("") && tb_modelos.Text.Equals("") && tb_modelos.Text.Equals("") && tb_marca.Text.Equals("") && tb_estado.Text.Equals("") && tb_empresa.Text.Equals(""))
            {
                consulta = "SELECT Ordenes_Compras.cod_orden_compra, Ordenes_Compras.fecha, Ordenes_Compras.importe_total, Ordenes_Compras.importe_total_me, Ordenes_Compras.estado, Proveedores.nombre_empresa, Proveedores.nro_documento, Proveedores.direccion_empresa, Proveedores.telefono_empresa, Personas.nombres, Personas.apellidos, Detalles_Orden_Compras.nro_renglon, Detalles_Orden_Compras.cantidad, Detalles_Orden_Compras.importe_gs, Detalles_Orden_Compras.importe_me, Detalles_Orden_Compras.cantidad_recibida, Detalles_Orden_Compras.costo_unitario, Productos.nombre, Familias_Productos.iva, Marcas.descripcion AS Marca, Modelo_Productos.descripcion AS Modelo, Monedas.descripcion AS Moneda FROM Ordenes_Compras  JOIN Detalles_Orden_Compras ON Ordenes_Compras.cod_orden_compra = Detalles_Orden_Compras.cod_orden_compra JOIN Proveedores ON Ordenes_Compras.cod_proveedor = Proveedores.cod_proveedor JOIN Productos ON Detalles_Orden_Compras.cod_producto = Productos.cod_producto JOIN Marcas ON Productos.cod_marca = Marcas.cod_marca JOIN Modelo_Productos ON Productos.cod_modelo = Modelo_Productos.cod_modelo JOIN Familias_Productos ON Productos.cod_familia_producto = Familias_Productos.cod_familia_producto JOIN Monedas ON Ordenes_Compras.cod_moneda = Monedas.cod_moneda JOIN Personas ON Personas.cod_tipo_documento = Proveedores.cod_tipo_documento AND Personas.nro_documento = Proveedores.nro_documento ";
                da = new System.Data.SqlClient.SqlDataAdapter(consulta, conexion);
            }
            DataSet DataSet_OrdenCompra = new DataSet();
            da.Fill(DataSet_OrdenCompra, "OrdenCompra");
            reportDoc.Load(Server.MapPath("~/Reportes/ReporteOrdenCompra.rpt"));
            reportDoc.SetDataSource(DataSet_OrdenCompra.Tables["OrdenCompra"]);
            Reporte_Ordenes_Compras.ReportSource = reportDoc;
            Reporte_Ordenes_Compras.RefreshReport();
        }
        catch (Exception error)
        {

        }
    }
   
 
    protected void ib_reporte_Click(object sender, ImageClickEventArgs e)
    {
        mostrarReporte();
    }
    protected void ib_cancelarReporte_Click1(object sender, ImageClickEventArgs e)
    {
        tb_empresa.Text = string.Empty;
        tb_estado.Text = string.Empty;
        tb_marca.Text = string.Empty;
        tb_modelos.Text = string.Empty;
        tb_moneda.Text = string.Empty;
        tb_producto.Text = string.Empty;
        mostrarReporte();
    }
}
